package com.xforceplus.bsstool.compare;

import com.alibaba.fastjson.JSON;
import com.xforceplus.bsstool.config.ConfigMain;
import com.xforceplus.bsstool.log.LogMain;
import com.xforceplus.bsstool.service.ServiceStep1;
import com.xforceplus.bsstool.service.ServiceStep2;
import com.xforceplus.bsstool.service.ServiceStep3;

import java.util.List;
import java.util.Map;

public class ResourceCompare {
  public static void main(String[] args)  throws Exception {
    //输出日志: INFO(一般运行日志)   WARN（待迁移解决）   ERROR（比对异常）
    LogMain logger = new LogMain();
    logger.startLog("base");
    //1   比对功能集和资源码
    //1.1 获取协同所有功能集，与新运营比对
    List<Map> oldResourceSetList = ServiceStep1.getOldResourceSetList(logger);
    logger.info("获取老运营功能集列表："+ JSON.toJSONString(oldResourceSetList));
    if(!ServiceStep1.compareResourceSetWithNew(oldResourceSetList,logger)){
      if (ConfigMain.STOP_ON_ERROR) {
        logger.info("1.1 检测到严重错误，停止执行！");
        logger.endLog();
        return;
      }else {
        logger.info("1.1 检测到严重错误，但继续执行！");
      }
    }
    //1.2 获取协同所有功能集与资源码关系，与新运营比对
    List<Map> oldResourceSetResourceRelList = ServiceStep1.getOldResourceSetResourceRelList(logger);
    logger.info("获取老运营功能集关联关系列表："+ JSON.toJSONString(oldResourceSetResourceRelList));
    if(!ServiceStep1.compareResourceSetResourceRelWithNew(oldResourceSetResourceRelList,logger)){
      if (ConfigMain.STOP_ON_ERROR) {
        logger.info("1.2 检测到严重错误，停止执行！");
        logger.endLog();
        return;
      }else {
        logger.info("1.2 检测到严重错误，但继续执行！");
      }
    }
    //1.3 获取协同所有功能集关联的资源码，与新运营比对
    List<Map> oldResourceList = ServiceStep1.getOldResourceList(logger);
    logger.info("获取老运营资源码列表："+ JSON.toJSONString(oldResourceList));
    if(!ServiceStep1.compareResourceWithNew(oldResourceList,logger)){
      if (ConfigMain.STOP_ON_ERROR) {
        logger.info("1.3 检测到严重错误，停止执行！");
        logger.endLog();
        return;
      }else {
        logger.info("1.3 检测到严重错误，但继续执行！");
      }
    }
    /*
    //2   比对资源码认证鉴权
    //2.1 获取协同资源码和服务API关系，与新运营比对
    List<Map> oldResourceApiRelList = ServiceStep2.getOldResourceApiRelList(logger);
    logger.info("获取老运营资源码认证服务关联关系列表："+ JSON.toJSONString(oldResourceApiRelList));
    if(!ServiceStep2.compareResourceApiRelWithNew(oldResourceApiRelList,logger)){
      if (ConfigMain.STOP_ON_ERROR) {
        logger.info("2.1 检测到严重错误，停止执行！");
        logger.endLog();
        return;
      }else {
        logger.info("2.1 检测到严重错误，但继续执行！");
      }
    }
    //2.2 获取协同资源码关联的服务API列表，与新运营比对
    List<Map> oldServiceApiList = ServiceStep2.getOldServiceApiList(logger);
    logger.info("获取老运营服务API列表："+ JSON.toJSONString(oldServiceApiList));
    if(!ServiceStep2.compareServiceApiWithNew(oldServiceApiList,logger)){
      if (ConfigMain.STOP_ON_ERROR) {
        logger.info("2.2 检测到严重错误，停止执行！");
        logger.endLog();
        return;
      }else {
        logger.info("2.2 检测到严重错误，但继续执行！");
      }
    }*/

    //3   比对协同公司服务包及服务包与功能集绑定关系
    //3.1 根据协同功能集列表获取服务包和功能集关系，与新运营比对
    List<Map> oldServiceResourceSetRelList = ServiceStep3.getOldServiceResourceSetRelList(logger);
    logger.info("获取老运营服务包功能集关联关系列表："+ JSON.toJSONString(oldServiceResourceSetRelList));
    if(!ServiceStep3.compareServiceResourceSetRelWithNew(oldServiceResourceSetRelList,logger)){
      if (ConfigMain.STOP_ON_ERROR) {
        logger.info("3.1 检测到严重错误，停止执行！");
        logger.endLog();
        return;
      }else {
        logger.info("3.1 检测到严重错误，但继续执行！");
      }
    }
    //3.2 根据协同功能集列表获取服务包列表，与新运营比对
    List<Map> oldServicePackageList = ServiceStep3.getOldServicePackageList(logger);
    logger.info("获取老运营服务包列表："+ JSON.toJSONString(oldServicePackageList));
    //logger.info("获取老运营服务包列表数："+ oldServicePackageList.size());
    if(!ServiceStep3.compareServicePackageWithNew(oldServicePackageList,logger)){
      if (ConfigMain.STOP_ON_ERROR) {
        logger.info("3.2 检测到严重错误，停止执行！");
        logger.endLog();
        return;
      }else {
        logger.info("3.2 检测到严重错误，但继续执行！");
      }
    }

    logger.endLog();
  }
}
